<?php

class Usuario_InsereController extends Zend_Controller_ActionAquiles {

    public function init() {
        parent::init();
        $this->view->title = 'Adição de Usuário.';
    }
    
    public function indexAction() {
        $this->view->form = new Application_Form_Usuario_Insere();
    }

    public function validaAction() {
        $resp = new Util_Function_JsonResponse();
        $form = new Application_Form_Usuario_Insere();
        $form->setDefaults($this->_request->getPost());
        $codigo = isset($_POST['codigo'])?$_POST['codigo']:null;
        
        $nome = $form->nome->getValue();
        if (!isset($nome)) {
            $resp->addErro("O 'Nome' é obrigatório.");
        }
        
        $campo = $form->cpf->getValue();
        if (!isset($campo)) {
            $resp->addErro("O 'CPF' é obrigatório.");
        }else if(!isset($codigo)){
            $retorno = Application_Model_Usuario::getInstance()->getByCPF($campo);
            if(isset($retorno) && !is_null($retorno)){
                $resp->addErro("O 'CPF' já é utilizado.");
            }
        }
        
        $campo = trim($form->parceria->getValue());
        if (isset($campo) && !empty($campo) && !is_null($campo)) {
            $parceria = Application_Model_Parceria::getInstance()->getById($campo);
            if(!isset($parceria)){
                $resp->addErro("A 'Parceria' escolhida não existe mais.");
            }
        }
        
        $campo = $form->endereco->getValue();
        if (!isset($campo)) {
            $resp->addErro("O 'Endereço' é obrigatório.");
        }
        
        $campo = $form->cidade->getValue();
        if (!isset($campo)) {
            $resp->addErro("O 'Cidade' é obrigatório.");
        }
        
        $campo = $form->cep->getValue();
        if (!isset($campo)) {
            $resp->addErro("O 'CEP' é obrigatório.");
        }
        
        $dtNasc = $form->dt_nascimento->getValue();
        if (!isset($dtNasc)){
            $resp->addErro("A 'Data de Nascimento' é obrigatória.");
        }else if (Zend_Date::now()->isEarlier($dtNasc)){
            $resp->addErro("A 'Data de Nascimento' deve ser antes de hoje.");
        }

        if($form->tipo_pessoa->getValue() == 2){
            $campo = $form->salario->getValue();
            if (!isset($campo)) {
                $resp->addErro("O 'Salário' é obrigatório.");
            }
            
            $campo = $form->dt_contratacao->getValue();
            if (!isset($campo)){
                $resp->addErro("A 'Data de Contratação' é obrigatório.");
            }else if(Zend_Date::now()->addDay(+1)->isEarlier($campo)){
                $resp->addErro("A 'Data de Contratação' deve ser a partir de hoje.");
            }
            
            $campo = $form->username->getValue();
            if (!isset($campo)) {
                $resp->addErro("O 'Username' é obrigatório.");
            }else if(!isset($codigo)){
                $retorno = Application_Model_Funcionario::getInstance()->getByUsername($campo,null);
                if(isset($retorno) && count($retorno) > 0){
                    $resp->addErro("Já existe um usuário cadastrado com este 'Username'.");
                }
            }else if(isset($codigo)){
                $retorno = Application_Model_Funcionario::getInstance()->getByUsername($campo,null);
                if(isset($retorno) && count($retorno) > 0 && $retorno[0]['codigo'] != $codigo){
                    $resp->addErro("Já existe um usuário cadastrado com este 'Username'.");
                }
            }
            
            
            $campo = $form->password->getValue();
            if (!isset($campo) && !isset($codigo)) {
                $resp->addErro("O 'Password' é obrigatório.");
            }
            
            $campo = $form->perfil_acesso->getValue();
            if (!isset($campo) || $campo == 0) {
                $resp->addErro("O 'Perfil de Acesso' é obrigatório.");
            }
            
        }
        
        echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die();
    }

    public function novoAction() {
        $codigo = $this->_request->getParam('codigo');
        $form = new Application_Form_Usuario_Insere($codigo);
        $model = Application_Model_Usuario::getInstance();
        $form->setDefaults($this->_request->getPost());
        $labels = array('dt_cadastro','dt_exclusao');
        $session = new Zend_Session_Namespace('msg');
        
        if(isset($codigo)){
            $model->update($form->getValues());
            $msg['msg1'] = 'Usuário modificado com sucesso.';
        }else{
            $model->insert($form->getValues());
            $msg['msg1'] = 'Usuário adicionado com sucesso.';
        }
        
        $session->msgs =$msg;
        $this->_helper->redirector('index','consulta','usuario');
    }

    
    public function deleteAction() {
        $codigo = $this->_request->getParam('codigo');
        if(is_numeric($codigo)){
            $model = Application_Model_Usuario::getInstance();
            $model->remove($codigo);
            $msg['msg1'] = 'Usuário excluído com sucesso.';
            $session = new Zend_Session_Namespace('msg');
            $session->msgs =$msg;
        }else{
            $msg['delete1'] = 'Não foi possível excluir o Usuário.';
            $session = new Zend_Session_Namespace('erros');
            $session->erros =$msg;
        }
        
        $this->_helper->redirector('index','consulta','usuario');
    }

}